﻿/**
 * Create in 2012-4-5.
 */
package kit4j.common.event;

/**
 * 事件发送者接口。
 * 
 * @author MiniKnife
 * 
 * @param <L>
 *            事件监听器类型
 * @param <E>
 *            事件类型
 */
public interface EventFirer<L, E> {

	/**
	 * 添加一个事件监听器到事件发送者。
	 * 
	 * @param listener
	 *            要添加的监听器
	 */
	public void addListener(L listener);

	/**
	 * 从事件发送者移除一个事件监听器。
	 * 
	 * @param listener
	 *            要移除的监听器
	 */
	public void removeListener(L listener);

	/**
	 * 获取所有已注册的事件监听器。
	 * 
	 * @return 所有已注册的事件监听器。
	 */
	public L[] getListeners();

	/**
	 * 发送事件到所有已注册的事件监听器。
	 * 
	 * @param evt
	 *            要发送的事件
	 */
	public void fireEvent(E evt);
}
